/** @file gpio.h 
 * Die Schnittstelle zu den GPIO Ports
 * 
 * @author Daniel Kummer, Sebastian Kummer
 * @date Donnerstag, Dezember 12, 2007
 * @version 1.0
 */

#ifndef GPIO_H_
#define GPIO_H_

#include "lcv-config.h"
#include "lcv-structs.h"
#include "gpio-config.h"

/**
 * Liest den Wert eines Eingabeports
 * @param port Nummer des LCV-Ports
 * @return Wert (0 oder 1) oder Fehlernummer (negativ)
 */
char lcv_gpio_read(unsigned char port);

/**
 * Schreibt den Wert eines Ausgabeports
 * @param port Nummer des LCV-Ports
 * @param value 0 oder 1
 * @return Erfolgsmeldung (positiv) oder Fehlernummer (negativ)
 */
char lcv_gpio_write(unsigned char port, unsigned char value);

/**
 * Simuliert einen Input an einem GPIO Port
 * @param port Nummer des LCV-Ports
 * @param value Wert (0 oder 1)
 */
void lcv_gpio_simulate_input(unsigned char port, unsigned char value);

/**
 * Legt eine Funktion als Event-Handler für Schreiboperationen auf GPIO Ports fest
 * @param handler Function-Pointer auf den Event-Handler mit der Portnummer und dem geschriebenen Wert als Parameter
 */
void lcv_gpio_simulate_output(void (*handler)(unsigned char port, unsigned char value));

#endif /*GPIO_H_*/
